package com.zhima.dto;

import cn.hutool.core.util.StrUtil;
import com.zhima.util.RegexUtil;

public enum AuthType {
    WX("wx") {
        @Override
        public boolean validate(AuthParamsDTO authParamsDTO) {
            return true;
        }
    },
    SMS("sms") {
        @Override
        public boolean validate(AuthParamsDTO authParamsDTO) {
            return RegexUtil.validatePhone(authParamsDTO.getPhone()) && StrUtil.isNotBlank(authParamsDTO.getCheckCode());
        }
    },
    EMAIL("email") {
        @Override
        public boolean validate(AuthParamsDTO authParamsDTO) {
            return RegexUtil.validateEmail(authParamsDTO.getEmail()) && StrUtil.isNotBlank(authParamsDTO.getCheckCode());
        }
    },
    PASSWORD("password") {
        @Override
        public boolean validate(AuthParamsDTO authParamsDTO) {
            return StrUtil.isNotBlank(authParamsDTO.getUserName()) && StrUtil.isNotBlank(authParamsDTO.getPassword());
        }
    },
    ;
    private final String value;

    AuthType(String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }

    /**
     * 由枚举类自己去决定要校验哪些参数的合法性
     *
     * @param authParamsDTO
     * @return
     */
    public abstract boolean validate(AuthParamsDTO authParamsDTO);
}
